# -*- coding: utf-8 -*-
"""
配置文件 - 所有关键参数都在这里设置
"""

# 摄像头设置
CAMERA_CONFIG = {
    'device_id': 0,           # USB摄像头设备ID，0表示默认摄像头
    'frame_width': 640,       # 图像宽度，写死为640
    'frame_height': 480,      # 图像高度，写死为480
    'fps': 30                 # 帧率，写死为30
}

# YOLOv5模型设置
YOLO_CONFIG = {
    'model_path': 'models/yolov5s.pt',  # 模型路径，写死为yolov5s，训练后可替换为自定义模型
    'conf_threshold': 0.5,    # 置信度阈值，高于此值才认为是目标
    'iou_threshold': 0.45,    # 非极大值抑制的IOU阈值
    'device': 'cpu'           # 使用设备，树莓派上写死为cpu
}

# 云台控制配置 (串口和舵机参数)
PAN_TILT_CONFIG = {
    'port': '/dev/ttyAMA0',   # 树莓派默认串口。在PC上调试可改为虚拟端口，如 'virtual_echo_port'
    'baudrate': 115200,       # 常见波特率，根据你的舵机调整
    'servo_horz_id': 1,       # 水平舵机ID (写死)
    'servo_vert_id': 2,       # 垂直舵机ID (写死)
    'max_pan_angle': 180,     # 水平最大转角 (度，写死)
    'max_tilt_angle': 180,    # 垂直最大转角 (度，写死)
    'dead_zone': 5,           # 死区角度 (度，写死)，避免微小抖动
}

# 目标跟踪设置
TRACKING_CONFIG = {
    'target_classes': [0],    # 要追踪的类别ID，训练自定义模型时通常为[0]（单类别）
    'dead_zone': 50,          # 死区像素范围，中心±50像素内不触发云台移动
    'kp': 0.005               # 云台比例控制系数，写死为0.005
}

# 显示设置
DISPLAY_CONFIG = {
    'show_preview': True,     # 是否显示实时预览窗口
    'draw_bbox': True,        # 是否绘制边界框
    'print_detections': True  # 是否在控制台打印检测结果
}